﻿using QuanLyHocSinh.About;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyHocSinh
{
    public partial class frmChinh : Form
    {
        public frmChinh()
        {
            InitializeComponent();
        }
        // Hiển thị cây thư mục cha
        void Fresh()
        {
            lOPTableAdapter.Fill(qLSVDataset.LOP);
            for (int i = 0; i < qLSVDataset.LOP.Count; i++)
            {
                TreeNode tn = new TreeNode(qLSVDataset.LOP[i][0].ToString());
                treeView.Nodes.Add(tn);
                sINHVIENTableAdapter.FillByMaLop(qLSVDataset.SINHVIEN, qLSVDataset.LOP[i][0].ToString());
                if (qLSVDataset.SINHVIEN.Count > 0)
                    tn.Nodes.Add("*");              //Nếu cây cha có con thì thêm nút con giả
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Fresh();

        }

        //Trước khi thu gọn cây
        private void treeView_BeforeCollapse(object sender, TreeViewCancelEventArgs e)
        {
            e.Node.Nodes.Clear();
            e.Node.Nodes.Add("*");
        }

        //Trước khi mở rộng cây
        private void treeView_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            if (e.Node.Nodes.Count != 0)
                e.Node.Nodes.RemoveAt(0); //Xóa nút con "giả"
            sINHVIENTableAdapter.FillByMaLop(qLSVDataset.SINHVIEN, e.Node.FullPath);
            for (int i = 0; i < qLSVDataset.SINHVIEN.Count; i++)
            {
                TreeNode tn = new TreeNode(qLSVDataset.SINHVIEN[i][0].ToString() + "_" + qLSVDataset.SINHVIEN[i][1]);
                e.Node.Nodes.Add(tn);
            }
        }

        //Sau khi chọn 1 nhánh của cây
        private void treeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            string str = treeView.SelectedNode.FullPath;
            //Nếu chọn vào 1 sinh viên trên cây
            try
            {
                string strMSSV = str.Substring(str.IndexOf("\\") + 1, 8);   //Lấy ra Mã số sinh viên từ đường dẫn của cây
                ShowPanal(strMSSV);                                         //Hiển thị lên panal thông tin sinh viên
                ShowListView(str.Substring(0, str.IndexOf("\\")));          //Hiển thị lên listview những sinh viên có lớp được chọn
            }
                //Nếu chọn vào lớp trên cây
            catch (Exception)
            {
                ShowListView(str);                                          
            };

        }

        private void listView_MouseClick(object sender, MouseEventArgs e)
        {
            ShowPanal(listView.SelectedItems[0].Text);                      //Hiển thị lên panal thông tin sinh viên được chọn trên listview

        }

        //Hiển thị listview thông tin sinh viên có cùng mã lớp
        //Tham số truyền vào là mã lớp
        void ShowListView(string MaLop)
        {
            listView.Items.Clear();                                                 
            //sINHVIENTableAdapter.FillByMaLop(qLSVDataset.SINHVIEN, e.Node.FullPath);

            //
            sINHVIENTableAdapter.FillByMaLop(qLSVDataset.SINHVIEN, MaLop);         
            for (int i = 0; i < qLSVDataset.SINHVIEN.Count; i++)
            {
                string strMaSV = qLSVDataset.SINHVIEN[i][0].ToString();
                string strTenSV = qLSVDataset.SINHVIEN[i][1].ToString();
                string strNgaySinh = qLSVDataset.SINHVIEN[i][2].ToString().Substring(0, qLSVDataset.SINHVIEN[i][2].ToString().IndexOf(" "));
                string strLop = qLSVDataset.SINHVIEN[i][3].ToString();

                ListViewItem SV = new ListViewItem(strMaSV);
                ListViewItem.ListViewSubItem HoTen = new ListViewItem.ListViewSubItem(SV, strTenSV);
                ListViewItem.ListViewSubItem NgaySinh = new ListViewItem.ListViewSubItem(SV, strNgaySinh);
                ListViewItem.ListViewSubItem Lop = new ListViewItem.ListViewSubItem(SV, strLop);

                SV.SubItems.Add(HoTen);
                SV.SubItems.Add(NgaySinh);
                SV.SubItems.Add(Lop);
                listView.Items.Add(SV);
            }
        }


        //Hển thi thôn tin sinh viên lên panal 
        //Tham số truyền vào là Mã sinh viên
        void ShowPanal(string MaSV)
        {
            sINHVIENTableAdapter.FillByMaSV(qLSVDataset.SINHVIEN, MaSV);
            try
            {
                lbl_masv.Text = qLSVDataset.SINHVIEN[0][0].ToString();
                lbl_tensv.Text = qLSVDataset.SINHVIEN[0][1].ToString();
                lbl_ngaysinh.Text = qLSVDataset.SINHVIEN[0][2].ToString().Substring(0, qLSVDataset.SINHVIEN[0][2].ToString().IndexOf(" "));
                lbl_lop.Text = qLSVDataset.SINHVIEN[0][3].ToString();

                byte[] MyData = new byte[0];
                MyData = (byte[])qLSVDataset.SINHVIEN[0][4];
                MemoryStream stream = new MemoryStream(MyData);
                pictureBox.Image = Image.FromStream(stream);
            }
            catch (Exception)
            { }
        }


        //Khi nhấn vào thêm sinh viên
        private void btn_them_Click(object sender, EventArgs e)
        {
            ThongTinSV.chucnang = 1;
            frmTTSV frm = new frmTTSV();
            frm.ShowDialog();
            ShowListView(ThongTinSV.CurrentLopSelected);
        }


        //Khi nhấn vào sửa sinh viên
        private void btn_sua_Click(object sender, EventArgs e)
        {
            if (lbl_tensv.Text.Trim() == "")
            {
                MessageBox.Show("Chưa chọn sinh viên để sửa", "Cảnh Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            ThongTinSV.chucnang = 2;
            ThongTinSV.MaSV = lbl_masv.Text;
            frmTTSV frm = new frmTTSV();
            frm.ShowDialog();
            ShowListView(ThongTinSV.CurrentLopSelected);
                
        }


        //Khi chọn vào menu Thông tin
        private void thôngTinToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            ThongTin frm = new ThongTin();
            frm.ShowDialog();
        }


        private void btn_xoa_Click(object sender, EventArgs e)
        {
            
            string TenSVDeleted;
            try
            {
                sINHVIENTableAdapter.FillByMaSV(qLSVDataset.SINHVIEN, lbl_masv.Text);
                TenSVDeleted=qLSVDataset.SINHVIEN[0][1].ToString();
                DialogResult result = MessageBox.Show("Có muốn xóa sinh viên " + TenSVDeleted, "Hỏi", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (result != DialogResult.OK) return;
                qLSVDataset.SINHVIEN[0].Delete();
                sINHVIENTableAdapter.Update(qLSVDataset.SINHVIEN);
                ShowListView(ThongTinSV.CurrentLopSelected);
                MessageBox.Show("Xóa Thành Công Sinh Viên " + TenSVDeleted, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }catch(Exception)
            {
                MessageBox.Show("Chưa chọn sinh viên để xóa", "Cảnh Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

    }
}
